package com.atguigu.tingshu.user.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.atguigu.tingshu.user.service.MqOpsService;
import com.atguigu.tingshu.user.strategy.ProcessDiffPayRecord;
import com.atguigu.tingshu.vo.user.UserPaidRecordVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * 策略模式：不需要适配
 * 直接能找到对应的人干活（对应关系提前维护好了）
 /
 * 适配器模式：需要适配
 * 只有适配到自己 才能干自己的活（对应关系没有提前维护好了 一次一次去找）
 */
@Service
public class MqOpsServiceImpl implements MqOpsService {
    @Autowired
    private Map<String, ProcessDiffPayRecord> map;
    @Override
    public void updatePayRecord(String content) {
        UserPaidRecordVo userPaidRecordVo = JSONObject.parseObject(content, UserPaidRecordVo.class);
        String itemType = userPaidRecordVo.getItemType();
        //采取策略模式
        //1.先找对应的实体类
        ProcessDiffPayRecord processDiffPayRecord = map.get(itemType);
        //2.执行对应实体类中重写的方法
        processDiffPayRecord.processPayRecord(userPaidRecordVo);
    }

}
